iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
自我挑戰組

Unity入門遊戲開發與實作系列 第 12

【Day 12】製作一個簡單 Unity 小遊戲(一)

  • 分享至 

  • xImage
  •  

有了前幾天的基礎,也對 Unity 有了基本的認識和概念,知道如何創建物體,如何添加 Component ,接下來幾天要透過製作一個簡單的闖關小遊戲,來了解如何利用 C# 程式碼控制 Unity 遊戲中的物件,讓我們對開發一個用 Unity 製作的遊戲過程更有概念。同時,也了解在 C# Script 中有哪些控制項可以控制物件的不同屬性,包括摩擦力、旋轉方向、受力方向和按鍵檢測等等

基本場景建設

  • 我們先在 Hierarchy 面板中創建一個 Cube ,將其命名為 Ground,並且在右側的 Inspector 面板中的 Transform 裡面將 Scale 的 x 軸調成 15 倍, z 軸調成 100 倍,這樣我們就得到了一個賽道
    https://ithelp.ithome.com.tw/upload/images/20240926/20169301q3gU1oQ7o5.png
  • 再創建一個 Cube ,將其命名為 Player,並且創建一個 Material 賦予這個 Player 一個紅色的外表,方便區分地板和玩家
    https://ithelp.ithome.com.tw/upload/images/20240926/20169301zp4gEd2gRx.png
  • 接下來要給 Player 添加 Rigidbody 的 Component,讓紅色方塊擁有與現實世界一樣的重力
  • 另外還要再給 Player 添加一個 Slippery 的 Component ,並且設置摩擦力為 0 ,方便之後的移動。
    https://ithelp.ithome.com.tw/upload/images/20240926/20169301wHV1lanylm.png

因為只是簡單的遊戲,所以場景只有這樣就結束了,接下來就要進入到程式的部分來讓 Player 能夠移動。

腳本撰寫

  • 新創建一個 C# Script 並且取名為 PlayerMovement,表示這是用來控制紅色方塊的腳本
  • 為了控制 Player ,我們宣告了一個 public Rigidbody 的 object 叫做 Rb,並且設置一個推力的變數叫做 forwardForce
  • Update() 區塊中加入程式碼使方塊受到 z 軸的推力
// PlayerMovement.cs
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    // Start is called before the first frame update
    public Rigidbody Rb;
    public folat forwardForce = 2000;
    
    void Start()
    {
		
    }
    
    // Update is called once per frame
    void Update()
    {
		rb.AddForce(0, 0, forwardForce);
    }
}
  • 把這個 Script 拖拉到 Player 上面來把這個檔案套用到 Player 上,同時也把 Rigidbody 拖到 Player Movement(Script) 的 rb 欄位
    https://ithelp.ithome.com.tw/upload/images/20240926/20169301xOWJON5pe2.png
    之所以可以在 Inspector 面板中看到 RbForward Force 這兩個變數,就是因為我們剛剛宣告時在前面加上了 public 所導致的,表示這兩個變數能夠從外部被任何人存取。

  • 當我們按下 Play 之後就可以看到方塊動起來囉,還伴隨著一些滾動一路向前
    https://ithelp.ithome.com.tw/upload/images/20240926/20169301bRKrtWolFM.png


今天撰寫的程式碼初步的了解了如何實現 Unity 中對物件施力使其移動,上面這些程式碼看起來沒有什麼問題,但實際上還有許多小地方可以修改。明天我們將來修改今天的程式碼,了解這段程式碼暗藏了什麼潛在的危險!


上一篇
【Day 11】進入物理的世界!
系列文
Unity入門遊戲開發與實作12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言